Jamal的博客

StackStorm Learning - Introduction

这个系列是翻译的StackStrom官方文档。

系列文章
总览
安装

概述

st2实际上是一个做自愈的流程引擎,通过事件的触发->规则匹配->执行动作来进行自愈,举个例子,某天线上生产的服务器load突然冲高了,机器上的监控发出报警,触发st2进行规则判断,规则判断是由于服务器异常导致,此时自动的根据之前设定好的规则进行服务器下线,这就是st2在做的事情,除此之外,业界现在非常流行的chatops也是他的一部分,所以本质上他是将人工的规则沉淀到系统上,成为标准的处理方式,是我们在做故障自愈三部曲(人工->规则化->智能化)中的规则化的环节,也是在做故障的发现、定位、止血的一个流程化工具。
当然作为一个流程化的工具,st2不仅仅可以用来做故障定位,持续集成等也是他的强项。

工作流程

这是st2的一个架构图,包含了以下的插件:

  • Sensors:传感器。用于接收异常事件的Python插件,简单理解为可以获取监控异常的时间通知。当来自外部系统的异常事件通知到sensors时,sensors将触发st2进行处理。
  • Triggers:触发器。是外部异常事件的st2表示。例如load飙高的时候,外部系统触发报警,报警首先会到sensors,sensors会触发具体的Trigger进行后置处理。Trigger分为通用触发器(例如定时器等)和集成触发器(例如自己编写的外部系统报警),Trigger可以通过代码自定义。
  • Actions:是一个具体的动作,例如下线单台服务器就是一个具体的动作,Action可以是通用操作(执行shell、REST调用等),也可以是集成操作(Docker、Puppet等),还可以是用户自定义操作。此外Action还支持工作流,有很丰富的玩法。
  • Rules:rule是把trigger和action映射起来的组件,通过rule匹配条件将具体的trigger映射到某一个具体的action。
  • Workflows:本质上也是一个action,只是支持了更丰富的工作流。
  • Packs和Audit trail:pack是用来管理action、trigger的,举个例子,通用操作在一个pack里面,docker操作在docker的pack里面,用户可创建自己的pack;Audit trail是执行记录。

总的来说st2是一个基于模块化架构的服务,模块之间松耦合,通过消息总线进行通信,并且具有强大的自定义拓展能力,此外还包括了一个web ui,一个cli客户端、完整的REST api和Python客户端,总的来说使用起来比较方便。